/**
 *
 */
package com.storm.lib.util;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import com.storm.lib.bean.CheckcCircleBean;



/**
 * 类功能: Double工具类
 * @author johnny
 * @version 2011-1-12
 */
public class DoubleUtil {

	/**
	 * 方法功能:返回long
	 * 更新时间:2011-1-12, 作者:johnny
	 * @param d
	 * @return
	 */
	public static long toLong(Double doubleVar) {
		return doubleVar.longValue();
	}

	/**
	 * 方法功能:去整
	 * 更新时间:2011-1-25, 作者:johnny
	 * @param d
	 * @return
	 */
	public static int toInt(Double d) {
		return d.intValue();
	}

	/**
	 * 方法功能:向上取整,如果是负数直接截
	 * 更新时间:2011-1-25, 作者:johnny
	 * @param d
	 * @return
	 */
	public static int toUpInt(Double d) {
		if(d<0){
			return d.intValue();
		}
		if(d-d.intValue()>0){
			return d.intValue()+1;
		}
		else{
			return d.intValue();
		}
	}

	/**
	 * 方法功能:向上取整,如果是负数直接截
	 * 更新时间:2011-1-25, 作者:johnny
	 * @param d
	 * @return
	 */
	public static long toUplong(Double d) {
		if(d<0){
			return d.longValue();
		}
		if(d-d.longValue()>0){
			return d.longValue()+1;
		}
		else{
			return d.longValue();
		}
	}

	/**
	 * 方法功能:例如21~23,得到的是21.0 21.5 22.0 22.5 23.0
	 * 更新时间:2011-2-11, 作者:johnny
	 * @param heroAttrStart
	 * @param heroAttrEnd
	 * @return
	 */
	public static Double[] getHalfDoubleFromInt(Integer startInt,Integer endInt) {
		List<Double> doubles = new ArrayList();
		double currentNum = startInt*1d;
		if(endInt<=startInt){
			ExceptionUtil.throwInvalidParamException();
		}
		CheckcCircleBean checkcCircleBean = new CheckcCircleBean();
		while(currentNum<=endInt){
			checkcCircleBean.count();
			doubles.add(currentNum);
			currentNum+=0.5;
		}
		return doubles.toArray(new Double[doubles.size()]);
	}
	/**
	 * 方法功能:格式化小数精度
	 * @author future 2011-10-13
	 * @param dou
	 * @param length 精确到几位小数点
	 * @return
	 */
	public static double doubleFormat(double dou, int length){
		StringBuilder sb = new StringBuilder("0.");
		for(int i=0; i<length; i++){
			sb.append("0");
		}
		DecimalFormat df = new DecimalFormat(sb.toString());
		return Double.valueOf(df.format(dou));
	}


	public static double[] getRandomArray(){
		double[] array = new double[3];
		int n1 = IntUtil.getRandomInt(0, 10);
		int n2 = IntUtil.getRandomInt(Math.max((5-n1),0), Math.min((15-n1),10));
		int n3 = 15-n1-n2;

		double k1 = 1*1d + (5-n1)*1d/10*1d;
		double k2 = 1*1d + (5-n2)*1d/10*1d;
		double k3 = 1*1d + (5-n3)*1d/10*1d;

		array[0] = k1;
		array[1] = k2;
		array[2] = k3;

		return array;
	}

	public static void main(String[] args) {
		System.out.println(doubleFormat(2.22323423423423,0));
//		ObjectUtil.printObject(doubleFormat(2.22323423423423));
	}

}

